# 给定一个正整数，判断它是不是快乐数。

"""
快乐数：
对于一个正整数，每一次将该数替换为它每个位置上的数字的平方和，然后重复这个过程直到这个数变为1，
或者无限循环但始终不为1。如果这个过程的结果为1，那么这个数就是快乐数。
例如：
19  = 1*1+9*9 = 82 = 8*8+2*2 = 68 = 6*6+8*8 = 100 = 1*1+0*0+0*0 = 1
"""


def change(num):
    sum = 0
    while num > 0:
        j = num % 10
        sum += j**2
        num = num // 10
    return sum


def is_happy(num):
    while num > 9:
        num = change(num)
    if num == 1:
        return True
    else:
        return False


if __name__ == "__main__":
    num = 1219
    print(is_happy(num))


# 文心一言给的解决方案
def is_happy(n):
    seen = set()
    while n != 1 and n not in seen:
        seen.add(n)
        n = sum(int(digit) ** 2 for digit in str(n))
    return n == 1
